In a data processing system, data and system control structures may be shared between several programs running on a single central processing complex (CPC), or shared between several CPC's using a shared facility.
Commands are communicated over a link to the shared facility through channel apparatus. (See related application 1.) The shared facility provides a program controlled command execution processor which accesses the shared control and data structures. The shared storage is comprised of system storage for system-wide or global control structures, and storage for CPC-program created data cache and list structures. (See related applications 2 and 3). All of these structures can be shared among programs in one CPC, or among plural CPC's. Commands are received over a plurality of links. Link buffers are provided to receive commands and/or data, and store responses for transfer over the link to a CPC and/or program. When the shared facility interconnects a plurality of CPC's, a system complex (Sysplex) is created to form a single system image from all of the autonomous CPC's.
It is therefore very important that a function and system be provided in the shared facility that maintains consistency of data or control structures. A program that initiates an action in the shared facility must be able to determine whether a command was received, received and completed, or received but aborted. The program must eventually receive the results of the action, or determine that the action must be requested again. (See related applications 4 and 5).
The related applications describe a shared coupling facility in the form of a structured electronic storage (SES) which couples a network of CPC's into a Sysplex. The CPC's share data structures in SES in the form of caches and lists, and can share management of the status of SES.
The status of a structure in SES is maintained by all the CPC's attached to the SES. When a structure is allocated or created in SES, the allocation status is made known to all systems in order to insure that all users of a given structure share the same instance of that structure. Structures may be allocated and deallocated and users of those structures may be attached and detached concurrently by any CPC during ongoing operation of the systems attached to the SES.
When a user of a SES structure is being detached or a structure is being deallocated, the system on which that operation is being executed may fail. The failure may be permanent or temporary. In either case, a latent SES operation may exist to detach a user or deallocate a SES structure. Until the detach or deallocate operation has completed, SES resources are not available for reassignment. In order to avoid having the failure of one system adversely impact the capabilities of other systems, other systems require the ability to complete the detach or deallocate operation.
The ability of a correctly operating system to complete the detach or deallocate operation associated with a failing system makes SES resources available for reassignment but leads to a serialization and data integrity problem. Assume a system "A" was processing a deallocate command when it became temporarily not operational. Following system A's failure, assume a system "B" completed the deallocate processing and subsequently allocated a new structure in the SES facility with the same identification as the structure that system A was deallocating before it failed. This new structure is available to service users and contain nonvolatile data. If system A resumes execution, the latent deallocate command must not be successfully processed against this new structure created by system B.